/*
 * @Author: xuetao 3168581151@qq.com
 * @Date: 2025-01-28
 * @LastEditors: xuetao 3168581151@qq.com
 * @LastEditTime: 2025-02-26
 * @Description: 校验工具, 纯静态类(abstract 防止实例化)
 */
// 用户名验证
String? validateUsername(String username) {
  if (username.isEmpty) {
    return "请输入用户名";
  }
  if (username.length < 5 || username.length > 20) {
    return "用户名长度必须在5到20个字符之间";
  }
  if (username.contains(' ')) {
    return "用户名不能包含空格";
  }

  return null; // 返回 null 表示验证通过
}

// 密码验证
String? validatePassword(String password) {
  if (password.isEmpty) {
    return "请输入密码";
  }
  if (password.length < 6 || password.length > 20) {
    return "密码长度必须在6到20个字符之间";
  }
  if (password.contains(' ')) {
    return "密码不能包含空格";
  }
  if (RegExp(r'[\u4e00-\u9fa5]').hasMatch(password)) {
    return "密码不能包含中文字符";
  }
  return null; // 返回 null 表示验证通过
}

// 手机号验证
String? validatePhoneNumber(String phoneNumber) {
  if (phoneNumber.isEmpty) {
    return '请输入手机号';
  } else if (!RegExp(r"^1[3-9]\d{9}$").hasMatch(phoneNumber)) {
    return '请输入有效的中国大陆手机号';
  }
  return null;
}

// 昵称验证
String? validateNikeName(String nickname) {
  if (nickname.isEmpty) {
    return '请输入昵称';
  } else if (nickname.contains(' ')) {
    return "不能包含空格";
  }
  return null;
}

// 验证码验证
String? validateAuthCode(String authCode) {
  if (authCode.isEmpty) {
    return '验证码不能为空';
  }
  return null;
}

// 注册校验
String? validateRegister(
    {String? nickname,
    String? phoneNumber,
    String? password,
    String? authCode}) {
  // 验证昵称
  if (nickname != null) {
    String? nicknameError = validateNikeName(nickname);
    if (nicknameError != null) {
      return nicknameError;
    }
  }

  // 验证手机号
  String? phoneError = validatePhoneNumber(phoneNumber ?? '');
  if (phoneError != null) {
    return phoneError;
  }

  // 验证密码
  String? passwordError = validatePassword(password ?? '');
  if (passwordError != null) {
    return passwordError;
  }

  // SVG验证验证码
  String? authCodeError = validateAuthCode(authCode ?? '');
  if (authCodeError != null) {
    return authCodeError;
  }

  // 如果所有验证都通过，则返回 null
  return null;
}

/// 登录校验
String? validateLogin({
  String? username,
  String? password,
}) {
  // 验证用户名
  String? usernameError = validateUsername(username!);
  if (usernameError != null) {
    return usernameError;
  }

  // 验证密码
  String? passwordError = validatePassword(password!);
  if (passwordError != null) {
    return passwordError;
  }
  // 如果所有验证都通过，则返回 null
  return null;
}

/// 修改密码校验
String? validateUpdatePassword({
  String? password,
  String? oldPassword,
}) {
  // 验证密码
  String? oldPasswordError = validatePassword(oldPassword!);
  if (oldPasswordError != null) {
    return oldPasswordError;
  }

  // 验证密码
  String? passwordError = validatePassword(password!);
  if (passwordError != null) {
    return passwordError;
  }
  // 如果所有验证都通过，则返回 null
  return null;
}
